home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 2
/
Atari Mega Archive CD - Volume 2.iso
/
8bit
/
cislib_b
/
sample.mod
< prev
next >
Wrap
Text File
|
1995-04-22
|
2KB
|
55 lines
100 REM <<< PERCOM DISK CONTROL >>>
110 REM <<< SAMPLE PROGRAM >>>
115 REM MODIFIED BY NATHANIEL T. SMITH
120 DIM BUF$(12):REM OPTION TABLE
125 DIM R$(1):REM RESPONSES GO HERE
130 Z=ADR("hLYd")
140 DATA 104,76,89,228
150 FOR I=0 TO 3
160 READ X
170 POKE Z+I,X
180 NEXT I
190 DCB=768
200 DATA 49,1,78,64,0,0,1,0,12,0,1,0
210 REM DEVICE,UNIT,COMMAND,STATUS(DIR),
220 REM BUFFER ADDR,TIMEOUT,SECTOR ADDR
230 FOR I=0 TO 11:REM BUILD THE DCB
240 READ X
250 POKE DCB+I,X
260 NEXT I
270 A=ADR(BUF$):REM INSERT BUFFER ADDRESS
280 X=INT(A/256)
290 POKE DCB+5,X
300 POKE DCB+4,A-X*256
302 PRINT "}DRIVE NUMBER";:INPUT I
304 POKE DCB+1,I:REM SET DRIVE IN DCB
310 X=USR(Z):REM READ THE OPTION TABLE
320 PRINT "}DRIVE ";I;" NUMBER OF TRACKS=";PEEK(A)
330 PRINT "DRIVE ";I;" STEP RATE CODE=";PEEK(A+1)
340 PRINT "DRIVE ";I;" SECTORS/TRACK=";PEEK(A+3)
350 PRINT PEEK(A+4)+1;" SIDED DRIVE"
360 IF PEEK(A+5)=0 THEN PRINT "SINGLE DENSITY":GOTO 380
370 IF PEEK(A+5)=4 THEN PRINT "DOUBLE DENSITY"
380 PRINT PEEK(A+6)*256+PEEK(A+7);" BYTES/SECTOR"
390 PRINT
391 ? "CHANGE OPTION TABLE (Y/N)";:INPUT R$:IF ASC(R$)=ASC("N") THEN 530
392 IF ASC(R$)=ASC("Y") THEN 600
393 GOTO 391
400 PRINT "Make it single (S) or double (D)"
410 PRINT " density";:INPUT R$
420 IF ASC(R$)=ASC("D") THEN 470
430 POKE A+5,0:REM MAKE SINGLE DENSITY
460 GOTO 500
470 POKE A+5,4:REM MAKE DOUBLE DENSITY
500 POKE DCB+3,128:REM SET DIRECTION FOR WRITE
510 POKE DCB+2,79:REM SET COMMAND (WRITE OPTION)
520 X=USR(Z):REM UPDATE DRIVE OPTIONS
530 ? "}":RUN
600 ? :? "NUMBER OF TRACKS=";:INPUT ANS:POKE A,ANS
610 ? :? "( 0=30ms 1=20ms 2=12ms 3=6ms )"
620 ? :? "STEP RATE CODE=";:INPUT ANS:POKE A+1,ANS
625 ? :? "SECTORS/TRACK";:INPUT ANS:POKE A+3,ANS
630 ? :? "NUMBER OF SIDES=";:INPUT ANS:POKE A+4,ANS-1
640 ? :? "BYTES/SECTOR=";:INPUT ANS:POKE A+6,INT(ANS/256):POKE A+7,ANS-(PEEK(A+6)*256)
650 GOTO 400